import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 力扣1403:非递增序列的最小子序列
 */
//
class Solution {
    public List<Integer> minSubsequence(int[] nums) {
        //先将数组的总和求出
        int total = Arrays.stream(nums).sum();
        int len = nums.length;
        //对数组进行排序
        Arrays.sort(nums);
        List<Integer> list = new ArrayList<>();
        int sum = 0;
        //因为我们上面已经进行过了排序,从后往前即是从大到小
        for (int i = len - 1; i >= 0; i--) {
            sum += nums[i];
            list.add(nums[i]);
            //从大到小add后,当已经添加的和大于总和减去已经加入的和时,break
            if (total - sum < sum){
                break;
            }
        }
        return list;
    }
}